From f0bedfe7bead4c37c15a9bc962d140c9eec4086f Mon Sep 17 00:00:00 2001 From: Tim Deegan Date: Tue, 28 Nov 2006 12:24:24 +0000 Subject: [PATCH] [XEN] Clear just the _PAGE_RW bit when shooting writeable mappings Signed-off-by: Tim Deegan --- xen/arch/x86/mm/shadow/multi.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/xen/arch/x86/mm/shadow/multi.c b/xen/arch/x86/mm/shadow/multi.c index 65bf0c66ba..27323f856e 100644 --- a/xen/arch/x86/mm/shadow/multi.c +++ b/xen/arch/x86/mm/shadow/multi.c @@ -3664,7 +3664,8 @@ int sh_remove_write_access(struct vcpu *v, mfn_t sl1mfn, mfn_t readonly_mfn) && (flags & _PAGE_RW) && (mfn_x(shadow_l1e_get_mfn(*sl1e)) == mfn_x(readonly_mfn)) ) { - (void) shadow_set_l1e(v, sl1e, shadow_l1e_empty(), sl1mfn); + shadow_l1e_t ro_sl1e = shadow_l1e_remove_flags(*sl1e, _PAGE_RW); + (void) shadow_set_l1e(v, sl1e, ro_sl1e, sl1mfn); #if SHADOW_OPTIMIZATIONS & SHOPT_WRITABLE_HEURISTIC /* Remember the last shadow that we shot a writeable mapping in */ v->arch.shadow.last_writeable_pte_smfn = mfn_x(base_sl1mfn); -- 2.30.2